
package com.insigma.business.qrcode.soldier.dao;


import com.insigma.business.qrcode.common.annotation.Crypt;
import com.insigma.business.qrcode.soldier.dto.GovEmployeeBSearcher;
import com.insigma.business.qrcode.soldier.dto.GovEmployeeIdDTO;
import com.insigma.business.qrcode.soldier.entity.GovEmployeeDO;
import com.insigma.business.qrcode.soldier.entity.GovEmployeeWithJobDO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;


public interface GovEmployeeDao {

    
    List<GovEmployeeDO> search(final GovEmployeeBSearcher innerSearcher);

    
    GovEmployeeDO get(final String id);

    
    Integer insert(final GovEmployeeDO govEmployeeDO);

    
    Integer update(final GovEmployeeDO govEmployeeDO);

    
    Integer delete(@Param("id") final String id,
                   @Param("modifierType") final String modifierType,
                   @Param("modifierId") final String modifierId);


    List<Map> selectAllImportGov();


    
    @Crypt
    GovEmployeeDO getByMobile(final String mobile);

    GovEmployeeIdDTO getGovEmpIdByMobile(final String mobile);
    
    @Crypt(returnDecrypt = true)
    List<GovEmployeeWithJobDO> searchEmpolyeeOfGov(GovEmployeeBSearcher govEmployeeBSearcher);

    List<GovEmployeeDO> searchSubGovEmployee(GovEmployeeBSearcher govEmployeeBSearcher);

    List<GovEmployeeDO> searchSubGovEmployeeByType(GovEmployeeBSearcher govEmployeeBSearcher);

    Integer insertZzd(GovEmployeeDO employeeDO);

    List<GovEmployeeDO> listZzdEmployeeByOrgId(@Param("orgs")List<String> orgs);

    List<GovEmployeeDO> listEmployeeByName(String realName);

    Integer realDelZzd(String areaLike);

    GovEmployeeDO getZzdEmployeeByOuterAccountId(String zzdId);

    GovEmployeeDO getByOutAccountId(String outerAccountId);

    GovEmployeeDO getZzdEmployee(String id);

    Integer deleteZzd(@Param("id") final String id,
                      @Param("modifierType") final String modifierType,
                      @Param("modifierId") final String modifierId);

    @Crypt(returnDecrypt = true)
    List<GovEmployeeWithJobDO> searchZzdEmpolyeeOfGov(GovEmployeeBSearcher govEmployeeBSearcher);

    GovEmployeeDO getByEmployeeZzdAccountId(String outerAccountId);
}
